package Day021_反射_注解.demo11_元注解;

/**
 * @Author：pengzhilin
 * @Date: 2020/5/14 15:11
 */
@MyAnnotation1
public class Test1 {

    @MyAnnotation1
    int age = 18;

    @MyAnnotation1
    public static void main(String[] args) {
        /*
            元注解:
                什么是元注解
                    定义在注解上的注解

                常见的元注解
                    	@Target:表示该注解作用在什么上面(位置),默认注解可以在任何位置.
                    	   @Target注解中的属性值:可以限制该注解在哪些位置可以使用
                    	   @Target注解中的属性: ElementType[] value();  属性类型: ElementType数组类型
                    	       ElementType: 枚举类型
                                    TYPE:类 接口
                                    METHOD:方法
                                    FIELD:字段
                                    CONSTRUCTOR:构造方法声明
                                    LOCAL_VARIABLE: 局部变量
                    	@Retention:定义该注解保留到那个代码阶段, 值为:RetentionPolicy类型,==默认只在源码阶段保留==
                            SOURCE:只在源码上保留(默认)
                            CLASS:在源码和字节码上保留
                            RUNTIME:在所有的阶段都保留
                    .java (源码阶段) ----编译---> .class(字节码阶段) ----加载内存--> 运行(RUNTIME)

         */
        @MyAnnotation1
        int num1 = 10;// 局部变量

        // jdk中的@Override
        // @Override // 编译报错
        int num2 = 10;// 局部变量

    }

    @Override
    public String toString() {
        return super.toString();
    }
}
